/**
 * Copyright 2011 Mathieu Magnaudet
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package edu.enac.geoapp.wims.model;

/**
 * Simple bean for the meteorological product CB
 * @author mathieu
 *
 */
public class CBProduct extends Product {
	private boolean hail;
	private LayerType layer;
	private float movingDirection;
	private float movingSpeed;
	private Point gravityCenter;
	private String trackingId;
	private Trend trendArea;
	private Trend trendDepth;
	private float maxForecastUpperBoundary;
	private float unbiasedForecastUpperBoundary;
	private float lowerBoundary;
	private String[] fieldList = new String[] { "gravityCenter", "hail", "layer",
			"lowerBound", "maxForecastUpperBoundary", "movingDirection",
			"movingSpeed", "severity", "trackingId", "trendArea",
			"trendDepth", "unbiasedForecastUpperBoundary" };;


	
	/**
	 * @return the hail
	 */
	public boolean isHail() {
		return hail;
	}

	/**
	 * @param hail
	 *            the hail to set
	 */
	public void setHail(boolean hail) {
		this.hail = hail;
	}

	/**
	 * @return the layer
	 */
	public LayerType getLayer() {
		return layer;
	}

	/**
	 * @param layer
	 *            the layer to set
	 */
	public void setLayer(LayerType layer) {
		this.layer = layer;
	}

	/**
	 * @return the movingDirection
	 */
	public float getMovingDirection() {
		return movingDirection;
	}

	/**
	 * @param movingDirection
	 *            the movingDirection to set
	 */
	public void setMovingDirection(float movingDirection) {
		this.movingDirection = movingDirection;
	}

	/**
	 * @return the movingSpeed
	 */
	public float getMovingSpeed() {
		return movingSpeed;
	}

	/**
	 * @param movingSpeed
	 *            the movingSpeed to set
	 */
	public void setMovingSpeed(float movingSpeed) {
		this.movingSpeed = movingSpeed;
	}

	/**
	 * @return the gravityCenter
	 */
	public Point getGravityCenter() {
		return gravityCenter;
	}

	/**
	 * @param gravityCenter
	 *            the gravityCenter to set
	 */
	public void setGravityCenter(Point gravityCenter) {
		this.gravityCenter = gravityCenter;
	}

	/**
	 * @return the severity
	 */
	public int getSeverity() {
		return super.getIntensityLevel();
	}

	/**
	 * @param severity
	 *            the severity to set
	 */
	public void setSeverity(int severity) {
		super.setIntensityLevel(severity);
	}

	/**
	 * @return the trackingId
	 */
	public String getTrackingId() {
		return trackingId;
	}

	/**
	 * @param trackingId
	 *            the trackingId to set
	 */
	public void setTrackingId(String trackingId) {
		this.trackingId = trackingId;
	}

	/**
	 * @return the trendArea
	 */
	public Trend getTrendArea() {
		return trendArea;
	}

	/**
	 * @param trendArea
	 *            the trendArea to set
	 */
	public void setTrendArea(Trend trendArea) {
		this.trendArea = trendArea;
	}

	/**
	 * @return the trendDepth
	 */
	public Trend getTrendDepth() {
		return trendDepth;
	}

	/**
	 * @param trendDepth
	 *            the trendDepth to set
	 */
	public void setTrendDepth(Trend trendDepth) {
		this.trendDepth = trendDepth;
	}

	/**
	 * @return the maxForecastUpperBoundary
	 */
	public float getMaxForecastUpperBoundary() {
		return maxForecastUpperBoundary;
	}

	/**
	 * @param maxForecastUpperBoundary
	 *            the maxForecastUpperBoundary to set
	 */
	public void setMaxForecastUpperBoundary(float maxForecastUpperBoundary) {
		this.maxForecastUpperBoundary = maxForecastUpperBoundary;
	}

	/**
	 * @return the unbiasedForecastUpperBoundary
	 */
	public float getUnbiasedForecastUpperBoundary() {
		return unbiasedForecastUpperBoundary;
	}

	/**
	 * @param unbiasedForecastUpperBoundary
	 *            the unbiasedForecastUpperBoundary to set
	 */
	public void setUnbiasedForecastUpperBoundary(
			float unbiasedForecastUpperBoundary) {
		this.unbiasedForecastUpperBoundary = unbiasedForecastUpperBoundary;
	}

	/**
	 * @return the lowerBoundary
	 */
	public float getLowerBoundary() {
		return lowerBoundary;
	}

	/**
	 * @param lowerBoundary
	 *            the lowerBoundary to set
	 */
	public void setLowerBoundary(float lowerBoundary) {
		this.lowerBoundary = lowerBoundary;
	}

	/**
	 * @return the fieldList
	 */
	public String[] getFieldList() {
		return fieldList;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "CBProduct [hail=" + hail + ", layer=" + layer
				+ ", movingDirection=" + movingDirection + ", movingSpeed="
				+ movingSpeed + ", gravityCenter=" + gravityCenter
				+ ", severity=" + super.getIntensityLevel() + ", trackingId=" + trackingId
				+ ", trendArea=" + trendArea + ", trendDepth=" + trendDepth
				+ ", maxForecastUpperBoundary=" + maxForecastUpperBoundary
				+ ", unbiasedForecastUpperBoundary="
				+ unbiasedForecastUpperBoundary + ", lowerBoundary="
				+ lowerBoundary + ", toString()=" + super.toString() + "]";
	}

}
